package com.power.algorithm;

import java.util.Arrays;

/**
 * @description:
 * @author: jiangnan
 * @time: 2021/6/18 9:16 上午
 * <p>
 * 编写一个函数，其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
 * <p>
 * 不要给另外的数组分配额外的空间，你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
 * <p>
 * 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
 */
public class Solution344 {

    public void reverseString(char[] s) {
        int i = 0;
        while (i < s.length / 2) {
            swap(s, i, s.length - 1 - i);
            i++;
        }
        System.out.println(Arrays.toString(s));
    }

    public void swap(char[] arr, int begin, int end) {
        char tmp = arr[begin];
        arr[begin] = arr[end];
        arr[end] = tmp;
    }


    public void reverseString2(char[] s) {
        int n = s.length;
        for (int left = 0, right = n - 1; left < n / 2; left++, right--) {
            char tmp = s[left];
            s[left] = s[right];
            s[right] = tmp;
        }

    }

    public static void main(String[] args) {
        char[] arr = {'H', 'e', 'l', 'l', 'o'};
        Solution344 solution344 = new Solution344();
        solution344.reverseString2(arr);
    }
}
